Aurora PostgreSQL から Amazon Bedrock へ直接アクセスできるようになりました
こんにちは、森田です。
以下のアップデートで、Amazon Aurora PostgreSQL から Amazon Bedrock へ直接アクセスできるようになりました。
Bedrockへアクセスする際には、Auroraのロール設定とSQL関数を利用することで可能です。
本記事では、実際に Amazon Aurora PostgreSQL から Amazon Bedrock へ直接アクセスするまでの手順をご紹介します。
やってみる
Aurora PostgreSQL作成
Aurora PostgreSQLをコンソールから作成します。
2023/12/22時点では、以下のアップデートでサポートされたPostgreSQLのバージョンでBedrock(aws_ml2.0)の利用が可能です。
Aurora PostgreSQL (Compatible with PostgreSQL 15.5)を選択して、作成を行います。
IAMロール作成
続いて、IAMロールの作成を行います。
特にポリシーは付与せず、作成を行います。
ポリシーを設定
IAMロール作成後に、インラインポリシーを設定します。
Aurora から Bedrock の実行を行うため、BedrockのInvokeModelをAllowするポリシーを作成します。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "bedrock:InvokeModel", "Resource": "arn:aws:bedrock:*::foundation-model/*" } ] }
設定後は以下のようになります。
IAMロールをAuroraへ追加
コンソールで先ほど作成したAuroraを開き、接続とセキュリティにあるIAMロールの管理から作成したロールを指定します。
以上で、コンソールでの Aurora の設定は完了です。
続いて、データベースに接続を行い、拡張機能のインストールを行います。
拡張機能のインストール
psqlクライアントを利用して、データベースへ接続を行います。
psql -h エンドポイント名\ -U postgres \ -p 5432 \ -d データベース名 \ -W
接続後、以下のコマンドを実行して、aws_mlのインストールを行います。
=> CREATE EXTENSION IF NOT EXISTS aws_ml CASCADE; NOTICE: installing required extension "aws_commons" CREATE EXTENSION
Bedrockの実行が可能なaws_mlのバージョンは、2.0ですので、以下コマンドを実行して確認します。
=> select * FROM pg_available_extensions where name like 'aws%'; name | default_version | installed_version | comment -------------+-----------------+-------------------+--------------------------------------------- aws_lambda | 1.0 | | AWS Lambda integration aws_commons | 1.2 | 1.2 | Common data types across AWS services aws_ml | 2.0 | 2.0 | ml integration aws_s3 | 1.2 | | AWS S3 extension for importing data from S3
インストール後は以下のようにaws_bedrockを利用して、Bedrock へ直接アクセスすることが可能です。
SELECT aws_bedrock.invoke_model ( 'amazon.titan-text-express-v1', 'application/json', 'application/json', '{"inputText": "what is orange"}' );
上記では、以下のように引数を指定しております。
- モデルの識別子:amazon.titan-text-express-v1
- モデルへの入力値(プロンプト): {"inputText": "what is orange"}
実行結果は以下となります。
{ "inputTextTokenCount": 3, "results": [ { "tokenCount": 8, "outputText": "\nAn orange is a citrus fruit.", "completionReason": "FINISH" } ] }
実行結果からも正常にBedrockへアクセスが行われていることが確認できました。
さいごに
今回は、aws_bedrock.invoke_modelでモデルの実行を行いましたが、他にもaws_bedrock.invoke_model_get_embeddingsといった埋め込みベクトルを取得する関数も用意されています。
データベースから簡単にBedrockへアクセスができるようになるアップデートですので、ぜひチェックしてみてください。